import vnode from "./vnode"
import createElement from "./createElement"
import patchVnode from './patchVnode'
//oldVnode现在是真实节点
//newVnode是虚拟节点
export default function(oldVnode,newVnode){
	//oldVnode需要转换成虚拟节点
	if( oldVnode.sel==undefined){
		oldVnode = vnode(
			oldVnode.tagName.toLowerCase(),
			{},
			[],
			undefined,
			oldVnode
		)
		console.log(oldVnode)
	}
	//判断久的虚拟节点和新的虚拟节点是否同一个
	if(oldVnode.sel===newVnode.sel){
		//新旧节点相同的情况下，判断children的情况
		patchVnode(oldVnode,newVnode)
	}else{
		//newVnode是一个虚拟节点，可能有子元素
		//createElement根据是否有子元素，从而选择是否递归
		let newVnodeElm = createElement(newVnode)
		// console.log(newVnodeElm)
		//获取旧的虚拟节点
		let oldVnodeElm = oldVnode.elm;
		//把新的虚拟DOM放入页面
		if(newVnodeElm){
			oldVnodeElm.parentNode.insertBefore(newVnodeElm ,oldVnodeElm);
		}
		//删除旧的真实dom节点
		oldVnodeElm.parentNode.removeChild(oldVnodeElm)
	} 
}